package edu.upc.clase.demo.controller;

import edu.upc.clase.demo.entity.Credential;
import edu.upc.clase.demo.entity.CriterioBusqueda;
import edu.upc.clase.demo.entity.ReporteBusqueda;
import edu.upc.clase.demo.entity.Torneo;
import edu.upc.clase.demo.service.TorneoService;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;

/**
 *
 * @author gian
 */
@Controller("TorneoController")
public class TorneoController {

    @Autowired
    private TorneoService torneoService;
    private static Logger log = LoggerFactory.getLogger(TorneoController.class);

    @RequestMapping("/torneo/index")
    public ModelAndView index() {
        ModelAndView mav = new ModelAndView("torneo/index");
        List<Torneo> torneo = torneoService.buscarTodos();
        CriterioBusqueda criterioBusqueda = new CriterioBusqueda();
        mav.addObject("torneo", torneo);
        mav.addObject("criterioBusqueda",criterioBusqueda);
        return mav;
    }
    
    @RequestMapping(value = "/torneo/new", method = RequestMethod.GET)
    public ModelAndView newTorneo() {
        ModelAndView mav = new ModelAndView("torneo/new");
        Torneo torneo = new Torneo();
        mav.getModelMap().put("torneo", torneo);
        return mav;
    }

    @RequestMapping(value = "/torneo/new", method = RequestMethod.POST)
    public String createTorneo(@ModelAttribute("torneo")Torneo torneo, SessionStatus status) {    
        torneoService.insertar(torneo);
        status.setComplete();

        return "redirect:/pages/torneo/index";
        
    }
    
    @RequestMapping(value = "/torneo/edit", method = RequestMethod.GET)
    public ModelAndView editTorneo(@RequestParam("id")Integer id) {    
        ModelAndView mav = new ModelAndView("torneo/edit");
        Torneo torneo = torneoService.buscar(id);
        mav.getModelMap().put("torneo", torneo);
        return mav;        
    }
    
    @RequestMapping(value="/torneo/edit", method=RequestMethod.POST)
    public String update(@ModelAttribute("torneo") Torneo torneo, SessionStatus status) {
        torneoService.actualizar(torneo);
        status.setComplete();
        return "redirect:/pages/torneo/index";
    }
    
    @RequestMapping("/torneo/delete")
    public ModelAndView delete(@RequestParam("id")Integer id)
    {
        ModelAndView mav = new ModelAndView("redirect:/pages/torneo/index");
        Torneo torneo = torneoService.buscar(id);
        torneoService.eliminar(torneo);
        return mav;
    }
    
    
    @RequestMapping(value = "/torneo/buscar", method=RequestMethod.POST)
    public ModelAndView buscar(@ModelAttribute("criterioBusqueda") CriterioBusqueda criterio, SessionStatus status) {
        ModelAndView mav = new ModelAndView("torneo/resultadoBusqueda");
        log.info("resultado = " + torneoService.buscarPorNombre(criterio.getNombre()).size());
        mav.getModel().put("resultado",torneoService.buscarPorNombre(criterio.getNombre()));
        return mav;
    }

    /*@RequestMapping("/reporte/reportetorneo")
    public ModelAndView index() {
        ModelAndView mav = new ModelAndView("reporte/reportetorneo");
        List<Torneo> torneo = torneoService.buscarReporteTorneo("%",1);
        ReporteBusqueda criterioReporteBusqueda = new ReporteBusqueda();
        mav.addObject("torneo", torneo);
        mav.addObject("criterioBusqueda",criterioReporteBusqueda);
        return mav;
    }*/
    
    @RequestMapping("/reporte/reportetorneo")
    public ModelAndView reportetorneo() {
        ModelAndView mav = new ModelAndView("reporte/reportetorneo");
        List<Torneo> torneo = torneoService.buscarReporteTorneo("%",1);
        ReporteBusqueda criterioReporteBusqueda = new ReporteBusqueda();
        mav.addObject("torneo", torneo);
        mav.addObject("criterioBusqueda",criterioReporteBusqueda);
        return mav;
    }
    
    
    
}
